// Map 
// let m = new Map();
// let obj = {
//   name : 'immoc'
// };
// m.set(obj, 'es') // key 可以为对象  
// // key value 
// m.get(obj)
// m.has(obj)

let map = new Map([
  ['name','imooc'],
  ['age', 5]
]);

// console.log(map);
// console.log(map.size);

// 当 key 一样时, 赋值直接覆盖 value 



// 遍历 
map.forEach((value, key) => {console.log(value, key);});

for(let [key, value] of map) { // 获得key value
  console.log(key, value);
}

for(let key of map.keys()) { // 获得所有key
  console.log(key);
}

for(let value of map.values()) { // 获得所有values
  console.log(value);
}

for(let [key, value] of map.entries()) {
  console.log(key, value);
}

// WeakMap key 只支持引用数据类型
let vm = new WeakMap()
vm.set([1], 2)
vm.set({
  name: 'mooc'
}, 'es')
console.log(vm);
//weakmap 不支持遍历, 和 clear的方法  也是弱引用 size 也无


// map: set get has delete clear
// weakmap: 键名为引用类型  没有clear size等方法 弱引用 不能遍历
